
/* eslint-disable no-undef */
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
import styleImport from 'vite-plugin-style-import'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver, VantResolver } from 'unplugin-vue-components/resolvers'
import px2rem from "postcss-px2rem"
// https://vitejs.dev/config/
export default defineConfig({
    plugins: [vue(), styleImport({
        libs: [
            {
                libraryName: 'vant',
                esModule: true,
                resolveStyle: (name) => {
                    return `../es/${name}/style`
                },
            },
        ],
    }), AutoImport({
        resolvers: [ElementPlusResolver()],
    }),
    Components({
        resolvers: [ElementPlusResolver(), VantResolver()],
    }),],
    resolve: {
        alias: {
            // 如果报错__dirname找不到，需要安装node,npm add @types/node --save-dev
            "@": path.resolve(__dirname, "src"),
            "coms": path.resolve(__dirname, "src/components"),
        }
    },

    // 开发或生产环境服务的公共基础路径,可以是/foo/、https://foo.com/、空字符串或./(用于开发环境) 几种类型，这个选项也可以通过命令行参数指定（例：vite build --base=/my/public/path/）
    base: './',
    // 静态资源服务的文件夹, 默认"public"
    publicDir: 'public',
    css: {
        // postcss: {
        //     plugins: [
        //         // eslint-disable-next-line no-undef
        //         require('autoprefixer')
        //     ]
        // },
        postcss: {
            plugins: [
              px2rem({
                remUnit:192
              })
            ]
        },
        preprocessorOptions: {
            scss: {
              additionalData: `@use "@/assets/css/index.scss" as *;`,
            },
          },
    },
    server: {
        // 服务器主机名，如果允许外部访问，可设置为"0.0.0.0"
        host: '0.0.0.0',
        // 服务器端口号
        port: 3003,
        // boolean | string 启动项目时自动在浏览器打开应用程序；如果为string，比如"/index.html"，会打开http://localhost:3000/index.html
        open: false,
        // 自定义代理规则
        proxy: {
            '/api': {
                // http://host.hlzhjy.com:34280
                target: 'http://host.hlzhjy.com:30580/',
                // target: 'http://192.168.80.110:8037',
                changeOrigin: true,
                rewrite: (path) => path.replace(/^\/api/, '')
            },
            // '/PickUpSystem': {
            //     // http://host.hlzhjy.com:34280
            //     // target: 'http://campus.hlzhjy.com:50080/',
            //     target: 'http://192.168.80.110:8037',
            //     changeOrigin: true,
            //     rewrite: (path) => path.replace(/^\/api/, '')
            // }
        }
    },
    build: {
        minify: 'terser',
        // 指定输出路径，默认'dist'
        outDir: 'dist',
        // 指定生成静态资源的存放路径(相对于build.outDir)
        assetsDir: 'assets',
        // 文件大小限制
        chunkSizeWarningLimit: 1500,
        // 小于此阈值的导入或引用资源将内联为base64编码，设置为0可禁用此项。默认4096（4kb）
        assetsInlineLimit: 4096,
        // 启用/禁用CSS代码拆分，如果禁用，整个项目的所有CSS将被提取到一个CSS文件中,默认true
        cssCodeSplit: true,
        // 构建后是否生成source map文件，默认false
        sourcemap: false,
        // 为true时，会生成manifest.json文件，用于后端集成
        manifest: false,
        rollupOptions: {
            output: {
                // chunkFileNames: "static/js/[name]-[hash].js",
                // entryFileNames: "static/js/[name]-[hash].js",
                // assetFileNames: "static/[ext]/[name]-[hash].[ext]",
                // 静态资源分拆打包
                manualChunks(id) {
                    if (id.includes('node_modules')) {
                        return id.toString().split('node_modules/')[1].split('/')[0].toString()
                    }
                },
                // 打包时候根据文件名分包
                chunkFileNames: (chunkInfo) => {
                    const facadeModuleId = chunkInfo.facadeModuleId
                        ? chunkInfo.facadeModuleId.split('/')
                        : [];
                    const fileName =
                        facadeModuleId[facadeModuleId.length - 2] || '[name]';
                    return `js/${fileName}/[name].[hash].js`;
                }
            },
        },
        // 生产环境移除console
        terserOptions: {
            compress: {
                drop_console: true,
                drop_debugger: true
            }
        }
    }
})
